package ru.chezclif.lern.conread;
import java.io.FileNotFoundException;
import java.io.FileReader;
import com.thoughtworks.xstream.*;
import ru.chezclif.lern.conread.parser.PathDataInputProperties;
/**
 * Наполнение хранилища данных из файла .xml
 * 
 * @author Vit
 * 
 */
public class XmlParser implements PathDataInputProperties {
	private XStream xmlStream = new XStream();
	DataBuffer localPropertyBuffer = new DataBuffer();
	@Override
	/**По параметру filePath находится файл, из него получают настройки и сохраняют в объект propertyBuffer
	 *@param filePath полный путь к оперируемому файлу
	 *@param propertyBuffer хранилище данных для заполнения*/
	public void parseFile(String filePath, DataBuffer propertyBuffer) {
		Preconditions.notBlank(filePath);
		Preconditions.notNull(filePath);
		Preconditions.notNull(propertyBuffer);
		try {
			// FileInputStream fis = new FileInputStream(filename);
			// InputStreamReader in = new InputStreamReader(fis,"windows-1251");
			FileReader xmlFile;
			xmlFile = new FileReader(filePath);
			localPropertyBuffer = (DataBuffer) xmlStream.fromXML(xmlFile);
		} catch (FileNotFoundException e) {
			throw new ru.chezclif.lern.conread.exceptions.FileNotFoundException(e, filePath);
		}
		propertyBuffer.setElements(localPropertyBuffer.getElements());
		propertyBuffer.setHeaderComment(localPropertyBuffer.getHeaderComment());
		propertyBuffer.setFooterComment(localPropertyBuffer.getFooterComment());
		localPropertyBuffer = null;
	}
}
